Apollo Server হলো একটি জনপ্রিয় GraphQL সার্ভার লাইব্রেরি, যা ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটা আদান-প্রদান করার জন্য একটি শক্তিশালী এবং দক্ষ উপায় প্রদান করে। Meteor একটি পূর্ণস্ট্যাক ফ্রেমওয়ার্ক যা GraphQL এবং Apollo Server এর সাথে একত্রে ব্যবহারের জন্য আদর্শ। Apollo Server Meteor অ্যাপ্লিকেশনের সাথে যুক্ত করতে গেলে আপনাকে কিছু স্টেপ অনুসরণ করতে হবে। এখানে Meteor এর সাথে Apollo Server সেটআপ করার পুরো প্রক্রিয়া দেওয়া হলো।
Step 1: প্রয়োজনীয় প্যাকেজ ইনস্টল করা
Apollo Server এবং GraphQL ব্যবহার করার জন্য কিছু প্যাকেজ ইনস্টল করতে হবে। প্রথমে, Apollo Server এবং GraphQL প্যাকেজগুলি ইনস্টল করুন।
meteor add graphql
npm install apollo-server
npm install graphql
এটি Apollo Server এবং GraphQL লাইব্রেরি আপনার Meteor অ্যাপ্লিকেশনে যুক্ত করবে।
Step 2: Apollo Server সেটআপ করা
এখন আমরা Apollo Server সেটআপ করব। আপনি Apollo Server এবং Meteor এর মধ্যে একটি GraphQL Schema তৈরি করবেন এবং তা Apollo Server এর সাথে যুক্ত করবেন।
Apollo Server সেটআপ:
import { ApolloServer, gql } from 'apollo-server'; import { Meteor } from 'meteor/meteor'; // 1. Create your GraphQL schema const typeDefs = gql` type Query { hello: String } `; const resolvers = { Query: { hello: () => 'Hello, World!', }, }; // 2. Initialize Apollo Server const server = new ApolloServer({ typeDefs, resolvers, }); // 3. Run Apollo Server Meteor.startup(() => { server.listen().then(({ url }) => { console.log(`Apollo Server running at ${url}`); }); });
এখানে, typeDefs হলো আপনার GraphQL schema, যেখানে Query ডিফাইন করা হয়েছে। Resolvers হলো সেই ফাংশন যা ক্লায়েন্টের প্রশ্নের (query) উত্তর সরবরাহ করে।
Step 3: Meteor এর মধ্যে Apollo Server অন্তর্ভুক্ত করা
আপনার Meteor অ্যাপ্লিকেশনের মধ্যে Apollo Server চলানোর জন্য আপনি Meteor.startup() ফাংশন ব্যবহার করবেন। এটি নিশ্চিত করবে যে Apollo Server চালু হবে যখন Meteor সার্ভার শুরু হবে।
এখানে আমরা Apollo Server এবং Meteor একত্রে চালাতে ব্যবহার করেছি server.listen() মেথড, যা Apollo Server কে নির্দিষ্ট URL এ চালু করবে।
Step 4: GraphQL API এর সাথে ডেটা ইন্টারঅ্যাকশন
এখন আপনি GraphQL Query তৈরি করতে পারেন এবং Apollo Server এর মাধ্যমে ডেটা পুনরুদ্ধার করতে পারেন। Meteor এর সাথে যুক্ত MongoDB ডাটাবেস থেকে ডেটা ফেচ করার জন্য একটি resolver তৈরি করুন।
MongoDB থেকে ডেটা ফেচ করার উদাহরণ:
Meteor MongoDB Collection তৈরি করা:
import { Mongo } from 'meteor/mongo'; export const Tasks = new Mongo.Collection('tasks');GraphQL Query এর মাধ্যমে MongoDB থেকে ডেটা ফেচ করা:
const typeDefs = gql` type Task { _id: String name: String } type Query { tasks: [Task] } `; const resolvers = { Query: { tasks: () => { return Tasks.find().fetch(); // MongoDB থেকে ডেটা ফেচ করা }, }, };Apollo Server সেটআপ:
const server = new ApolloServer({ typeDefs, resolvers, }); Meteor.startup(() => { server.listen().then(({ url }) => { console.log(`Apollo Server running at ${url}`); }); });
এখন আপনি GraphQL Query এর মাধ্যমে MongoDB ডাটাবেস থেকে tasks ডেটা ফেচ করতে পারবেন।
Step 5: Apollo Server এর সাথে Authentication যোগ করা
Meteor Accounts ব্যবহার করে আপনি Apollo Server এর সাথে Authentication যোগ করতে পারেন। আপনি Meteor's Accounts API ব্যবহার করে নিরাপদভাবে ব্যবহারকারীকে লগইন করতে পারেন এবং GraphQL API তে Authentication নিশ্চিত করতে পারেন।
Authentication Example:
const resolvers = {
Query: {
tasks: (parent, args, context) => {
if (!context.user) {
throw new Error('Not authenticated');
}
return Tasks.find().fetch();
},
},
};
const server = new ApolloServer({
typeDefs,
resolvers,
context: ({ req }) => {
// Authenticate user
const token = req.headers.authorization || '';
const user = Accounts.verifyToken(token);
return { user };
},
});
Meteor.startup(() => {
server.listen().then(({ url }) => {
console.log(`Apollo Server running at ${url}`);
});
});
এখানে, context ফাংশনে authentication চেক করা হচ্ছে। যদি ব্যবহারকারী authenticated না হয়, তবে tasks ডেটা ফেচ করা হবে না এবং একটি ত্রুটি (error) দেখানো হবে।
Step 6: Apollo Client ব্যবহার করা
অবশেষে, আপনি Apollo Client ব্যবহার করে GraphQL API এর সাথে যোগাযোগ করতে পারেন। আপনি Apollo Client ব্যবহার করে Meteor অ্যাপ্লিকেশন থেকে GraphQL Queries পাঠাতে পারেন এবং ডেটা ফেচ করতে পারেন।
npm install @apollo/client graphql
import { ApolloClient, InMemoryCache, gql } from '@apollo/client';
const client = new ApolloClient({
uri: 'http://localhost:4000',
cache: new InMemoryCache(),
});
client
.query({
query: gql`
query {
tasks {
_id
name
}
}
`,
})
.then(result => console.log(result));
এখানে, Apollo Client Meteor অ্যাপ্লিকেশনের সাথে সংযুক্ত GraphQL API থেকে tasks ডেটা ফেচ করছে।
সারাংশ
Meteor এবং Apollo Server ব্যবহার করে GraphQL API তৈরি করা একটি শক্তিশালী পদ্ধতি যা ডেটা ফেচিং এবং ম্যানিপুলেশন সহজ করে তোলে। Apollo Server Meteor অ্যাপ্লিকেশনের সাথে সংযুক্ত হয়ে MongoDB বা অন্যান্য ডেটাবেস থেকে ডেটা পুনরুদ্ধার করতে সক্ষম হয়। এটি অ্যাপ্লিকেশনকে আরো দক্ষ এবং স্কেলেবল করে তোলে, বিশেষ করে যখন আপনি complex queries এবং real-time data এর সাথে কাজ করছেন।
Read more